package register

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"os"
)

type User struct {
	Password string `json:"password"`
	Money    string `json:"money"`
}

var user_info = make(map[string]User)

func Reg_user() {
	// 读取用户信息的文件
	LoadUsersFromFile()
	var username string
	var passwd string
	var money string

	fmt.Println("欢迎进入三创购物注册界面")
	fmt.Printf("请输入您的用户名: ")
	fmt.Scan(&username)
	fmt.Printf("请输入您的用户密码: ")
	fmt.Scan(&passwd)

	// 检查用户名是否已经存在
	if _, exists := user_info[username]; exists {
		fmt.Println("用户信息已存在，请去登陆页面登录!")
		return
	}

	fmt.Printf("请输入您的账户余额: ")
	fmt.Scan(&money)

	// 将新注册的用户信息保存到user_info
	user_info[username] = User{Password: passwd, Money: money}

	// 把新注册的用户信息写入磁盘
	SaveUsersToFile()
	fmt.Println("注册成功!")
}

func LoadUsersFromFile() {
	userBytes, err := ioutil.ReadFile("users.json")
	if err != nil {
		if os.IsNotExist(err) {
			fmt.Println("用户文件不存在，正在创建新文件。")
			return
		}
		fmt.Printf("读取文件时发生错误: %v\n", err)
		return
	}

	err = json.Unmarshal(userBytes, &user_info)
	if err != nil {
		fmt.Printf("解析用户数据时发生错误: %v\n", err)
		return
	}
}

func SaveUsersToFile() {
	userBytes, err := json.MarshalIndent(user_info, "", "  ") // 转换为JSON
	if err != nil {
		fmt.Printf("保存用户信息到文件时发生错误: %v\n", err)
		return
	}

	err = ioutil.WriteFile("users.json", userBytes, 0644)
	if err != nil {
		fmt.Printf("写入文件时发生错误: %v\n", err)
		return
	}
}
